﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _9_PrototypePattern
{
    class Program
    {
        /*
         原型模式(Prototype)：用原型实例指定创建对象的种类，并且通过拷贝这些原型创建新的对象。

          一般在初始化的信息不发生变化的情况下，克隆是最好的办法。这既隐藏了对象创建的的细节，又对性能大幅提高。

          深拷贝和浅拷贝的区别
             */
        static void Main(string[] args)
        {
            ConcretePrototype1 p1 = new ConcretePrototype1("I");
            ConcretePrototype1 c1 = (ConcretePrototype1)p1.Clone();
            Console.WriteLine("Cloned:{0}", c1.Id);

            Console.Read();
        }
    }
}
